package demo;

import java.util.Stack;
//请你仅使用两个栈实现先入先出队列。队列应当支持一般队列支持的所有操作（push、pop、peek、empty）：
//实现 MyQueue 类：
//void push(int x) 将元素 x 推到队列的末尾
//int pop() 从队列的开头移除并返回元素
//int peek() 返回队列开头的元素
//boolean empty() 如果队列为空，返回 true ；否则，返回 false
//说明：
//你只能使用标准的栈操作 —— 也就是只有 push to top, peek/pop from top, size, 和 is empty 操作是合法的。
class MyQueue {
    private Stack<Integer> input;//作为输入栈
    private Stack<Integer> output;//作为输出栈
    public MyQueue() {
    input = new Stack<>();
    output = new Stack<>();
    }

    public void push(int x) {
        input.push(x);
    }

    public int pop() {
        if(empty()){
            return -1;
        }
        if (output.isEmpty()) {
            while (!input.isEmpty()) {
                output.push(input.pop());
            }
            return output.pop();
        }
        return output.pop();
    }

    public int peek() {
        if(empty()){
            return -1;
        }
        if (output.isEmpty()) {
            while (!input.isEmpty()) {
                output.push(input.pop());
            }
            return output.peek();
        }
        return output.peek();
    }

    public boolean empty() {
        return input.isEmpty() && output.isEmpty();
    }
}